#include <stdio.h>

typedef enum _enum {
	aa,
	ab,
	ac,
	ad,
	ae,
	af,
	ag,
}em;

int main()
{
    /*1169:	f3 0f 1e fa          	endbr64 
    116d:	55                   	push   %rbp
    116e:	48 89 e5             	mov    %rsp,%rbp
    1171:	48 83 ec 10          	sub    $0x10,%rsp
    1175:	c7 45 f4 00 00 00 00 	movl   $0x0,-0xc(%rbp)*/
		em a = aa;

    /*117c:	8b 45 f4             	mov    -0xc(%rbp),%eax
    117f:	89 c6                	mov    %eax,%esi
    1181:	48 8d 3d 7c 0e 00 00 	lea    0xe7c(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>
    1188:	b8 00 00 00 00       	mov    $0x0,%eax
    118d:	e8 de fe ff ff       	callq  1070 <printf@plt>*/
		printf("%d\n", a);

    /*1192:	c7 45 f4 05 00 00 00 	movl   $0x5,-0xc(%rbp)*/
		a = af;

    /*1199:	8b 45 f4             	mov    -0xc(%rbp),%eax
    119c:	89 c6                	mov    %eax,%esi
    119e:	48 8d 3d 5f 0e 00 00 	lea    0xe5f(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>
    11a5:	b8 00 00 00 00       	mov    $0x0,%eax
    11aa:	e8 c1 fe ff ff       	callq  1070 <printf@plt>*/
		printf("%d\n", a);

    /*11af:	c7 45 f8 00 00 00 00 	movl   $0x0,-0x8(%rbp)*/
		int b = 0x0;

    /*11b6:	8b 45 f8             	mov    -0x8(%rbp),%eax
    11b9:	89 c6                	mov    %eax,%esi
    11bb:	48 8d 3d 42 0e 00 00 	lea    0xe42(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>
    11c2:	b8 00 00 00 00       	mov    $0x0,%eax
    11c7:	e8 a4 fe ff ff       	callq  1070 <printf@plt>*/
		printf("%d\n", b);

    /*11cc:	c7 45 fc 04 00 00 00 	movl   $0x4,-0x4(%rbp)*/
		int c = 0x4;

    /*11d3:	8b 45 fc             	mov    -0x4(%rbp),%eax
    11d6:	89 c6                	mov    %eax,%esi
    11d8:	48 8d 3d 29 0e 00 00 	lea    0xe29(%rip),%rdi        # 2008 <_IO_stdin_used+0x8>
    11df:	b8 00 00 00 00       	mov    $0x0,%eax
    11e4:	e8 87 fe ff ff       	callq  1070 <printf@plt>*/
		printf("%d\n", c);

    /*11e9:	be 02 00 00 00       	mov    $0x2,%esi
    11ee:	48 8d 3d 1b 0e 00 00 	lea    0xe1b(%rip),%rdi        # 2010 <_IO_stdin_used+0x10>
    11f5:	b8 00 00 00 00       	mov    $0x0,%eax
    11fa:	e8 71 fe ff ff       	callq  1070 <printf@plt>*/
		printf("%d\n", 2);

    /*11ff:	be 04 00 00 00       	mov    $0x4,%esi
    1204:	48 8d 3d 17 0e 00 00 	lea    0xe17(%rip),%rdi        # 2022 <_IO_stdin_used+0x22>
    120b:	b8 00 00 00 00       	mov    $0x0,%eax
    1210:	e8 5b fe ff ff       	callq  1070 <printf@plt>*/
		printf("%d\n", 4);

    /*1215:	be 04 00 00 00       	mov    $0x4,%esi
    121a:	48 8d 3d 12 0e 00 00 	lea    0xe12(%rip),%rdi        # 2033 <_IO_stdin_used+0x33>
    1221:	b8 00 00 00 00       	mov    $0x0,%eax
    1226:	e8 45 fe ff ff       	callq  1070 <printf@plt>*/
		printf("%d\n", 4);

    /*122b:	be 00 00 00 00       	mov    $0x0,%esi
    1230:	48 8d 3d 13 0e 00 00 	lea    0xe13(%rip),%rdi        # 204a <_IO_stdin_used+0x4a>
    1237:	b8 00 00 00 00       	mov    $0x0,%eax
    123c:	e8 2f fe ff ff       	callq  1070 <printf@plt>*/
		printf("%d\n", 0);

    /*1241:	be 00 00 00 00       	mov    $0x0,%esi
    1246:	48 8d 3d fd 0d 00 00 	lea    0xdfd(%rip),%rdi        # 204a <_IO_stdin_used+0x4a>
    124d:	b8 00 00 00 00       	mov    $0x0,%eax
    1252:	e8 19 fe ff ff       	callq  1070 <printf@plt>*/
		printf("%d\n", 0);

    /*1257:	83 7d f4 05          	cmpl   $0x5,-0xc(%rbp)
    125b:	77 33                	ja     1290 <main+0x127>
    125d:	8b 45 f4             	mov    -0xc(%rbp),%eax
    1260:	48 8d 14 85 00 00 00 	lea    0x0(,%rax,4),%rdx
    1267:	00 
    1268:	48 8d 05 f9 0d 00 00 	lea    0xdf9(%rip),%rax        # 2068 <_IO_stdin_used+0x68>
    126f:	8b 04 02             	mov    (%rdx,%rax,1),%eax
    1272:	48 98                	cltq   
    1274:	48 8d 15 ed 0d 00 00 	lea    0xded(%rip),%rdx        # 2068 <_IO_stdin_used+0x68>
    127b:	48 01 d0             	add    %rdx,%rax
    127e:	3e ff e0             	notrack jmpq *%rax			// 这一段是识别enum的关键
    1281:	48 8d 3d d5 0d 00 00 	lea    0xdd5(%rip),%rdi        # 205d <_IO_stdin_used+0x5d>
    1288:	e8 d3 fd ff ff       	callq  1060 <puts@plt>
    128d:	eb 01                	jmp    1290 <main+0x127>*/
		switch (a) {
			case aa:break;
			case ab:break;
			case ac:break;
			case ad:break;
			case ae:break;
			case af:
				puts("enum");
				break;
		} 
    /*128f:	90                   	nop
    1290:	b8 00 00 00 00       	mov    $0x0,%eax
    1295:	c9                   	leaveq 
    1296:	c3                   	retq   
    1297:	66 0f 1f 84 00 00 00 	nopw   0x0(%rax,%rax,1)
    129e:	00 00 */
	return 0;
}
